package trabalhothreads;

public class CaixaAtendimento extends Thread implements Runnable {

    private Banco banco;
    private String nome;
    private boolean caixaAberto = false;

    public CaixaAtendimento(Banco banco) {
        nome = "Caixa";
        this.banco = banco;
    }

    public CaixaAtendimento(Banco banco, String caixa) {
        nome = caixa;
        this.banco = banco;
        new Thread(this, "CaixaAtendimento").start();
    }

    public void iniciaCaixa(){
        caixaAberto = true;
        new Thread(this, "CaixaAtendimento").start();
    }

    public void fechaCaixa() {
        this.caixaAberto = false;
    }
    
    public void run() {
        boolean flag = true;
        while (flag) {
            if(caixaAberto){
                if(banco.getFila().getFila().size() != 0){
                    banco.getFila().get();
                    System.out.println("Thread : " + nome);
                }else{
                    if(!banco.isBancoAberto()){
                        flag = false;
                        System.out.println("Caixa Fechou por que banco is" + banco.isBancoAberto());
                    }
                }
            }else{
                flag = false;
                System.out.println("caixa fechou porque caixa is"+ caixaAberto);
            }
        }
        System.out.println("continuo aberto"+nome);
    }
}
